/* 提供用户相关的vuex操作 */

import { getUserProfile } from '@/api/user'

// 导入本地存储
import {
  setStorageToken,
  getStorageToken,
  removeStorageToken
} from '@/utils/storage'

const state = {
  // 先去本地存储中看看是否有token数据，有的话就取出来给state的token，没有的话就是空对象
  token: getStorageToken(),
  userInfo: {}
}

const mutations = {
  setToken(state, value) {
    state.token = value

    // 把value永久存储起来
    setStorageToken(value)
  },
  // 退出登录的时候，需要将token给删除掉
  removeToken(state) {
    // 清除token操作
    state.token = {}

    removeStorageToken()
  },
  // 修改用户信息
  setUserInfo(state, obj) {
    state.userInfo = obj
  }
}

const actions = {
  // 提供异步操作
  // context 指仓库
  async ActionsGetUserInfo(context) {
    const res = await getUserProfile()

    // actions里面不能直接修改数据（修改数据都是通过mutations方法）
    context.commit('setUserInfo', res.data)
  }
}
const getters = {}

export default {
  // 命名空间
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}
